import os.path
import tkinter as tk
from tkinter import filedialog, ttk, messagebox

from ai_translator.translator import PDFTranslator


class GUI:
    def __init__(self, translator: PDFTranslator, title: str = 'PDF翻译工具', width: int = 500, height: int = 500) -> None:
        self.translator = translator
        self.root = tk.Tk()
        self.root.title(title)
        self.root.geometry(f"{width}x{height}")
        self.target_lang_combobox = None
        self.file_format_combobox = None
        self.pdf_path_var = tk.StringVar()
        self.save_path_var = tk.StringVar()

    def run(self):
        self.draw()
        self.root.mainloop()

    def draw(self):
        # 创建选择PDF文件按钮和文本框
        pdf_label = tk.Label(self.root, text="选择PDF文件:")
        pdf_label.pack(pady=5)
        pdf_entry = tk.Entry(self.root, textvariable=self.pdf_path_var, width=50)
        pdf_entry.pack(pady=5)
        pdf_button = tk.Button(self.root, text="选择文件", command=self.select_pdf)
        pdf_button.pack(pady=5)

        # 创建选择保存路径按钮和文本框
        save_label = tk.Label(self.root, text="选择翻译后文件的保存路径:")
        save_label.pack(pady=5)
        save_entry = tk.Entry(self.root, textvariable=self.save_path_var, width=50)
        save_entry.pack(pady=5)
        save_button = tk.Button(self.root, text="选择路径", command=self.select_save_path)
        save_button.pack(pady=5)

        # 创建保存文件格式下拉框
        file_formate_label = tk.Label(self.root, text="选择目标文件格式:")
        file_formate_label.pack(pady=5)
        self.file_format_combobox = ttk.Combobox(self.root, values=["markdown", "pdf"])
        self.file_format_combobox.pack(pady=5)

        # 创建目标语言选择下拉框
        target_lang_label = tk.Label(self.root, text="选择目标语言:")
        target_lang_label.pack(pady=5)
        self.target_lang_combobox = ttk.Combobox(self.root, values=["英语", "中文", "法语", "德语", "日语", "西班牙语"])
        self.target_lang_combobox.pack(pady=5)

        # 创建翻译按钮
        translate_button = tk.Button(self.root, text="开始翻译", command=self.translate)
        translate_button.pack(pady=20)

    # 选择PDF文件函数
    def select_pdf(self):
        file_path = filedialog.askopenfilename(
            title="选择PDF文件",
            filetypes=[("PDF文件", "*.pdf")]
        )
        self.pdf_path_var.set(file_path)

    # 选择翻译后文件存储路径函数
    def select_save_path(self):
        folder_path = filedialog.askdirectory(title="选择保存路径")
        self.save_path_var.set(folder_path)

    # 执行翻译操作的函数（这里仅模拟功能）
    def translate(self):
        pdf_path = self.pdf_path_var.get()
        save_path = self.save_path_var.get()
        target_lang = self.target_lang_combobox.get()
        file_format = self.file_format_combobox.get()

        if not pdf_path or not save_path or not target_lang or not file_format:
            messagebox.showerror("错误", "请确保所有选项都已选择！")
            return

        messagebox.showinfo("提示",
                            f"开始翻译：\n源文件：{pdf_path}\n")

        self.translator.translate_pdf(pdf_path, file_format, target_lang, save_path)



